package com.projectx.dao;

import com.projectx.entity.GroupData;

import org.litepal.LitePal;

import java.util.List;

public class GroupDataDao {
    /**
     * 根据用户名查找其所有的群组
     * @param username
     * @return 群组
     */
    public List<GroupData> allGroups(String username){
        return LitePal.where("username = ?",username).find(GroupData.class);
    }

    /**
     * 判断用户是否有这个群组
     * @param username
     * @param groupName
     * @return
     */
    public boolean groupExist(String username,String groupName){
        return !LitePal.where("username = ? and groupName = ?",username,groupName).find(GroupData.class).isEmpty();
    }

    /**
     * 删除所有关于该user的群组数据
     * @param username
     * @return 返回删除群组条目
     */
    public int deleteUser(String username){
        return LitePal.deleteAll(GroupData.class,"username = ?",username);
    }

    /**
     * 删除一个用户的一个群组
     * @param username
     * @param groupName
     * @return
     */
    public boolean deleteGroup(String username,String groupName){
        return LitePal.deleteAll(GroupData.class,"username = ? and groupName = ?",username,groupName) > 0;
    }

    /**
     * 存入单个群组
     * @param username
     * @param groupName
     * @return false可能表示群组已经存在数据库中
     */
    public boolean addContact(String username,String groupName){
        if (groupExist(username,groupName)){
            return false;
        }
        GroupData groupData = new GroupData();
        groupData.setUsername(username);
        groupData.setGroupName(groupName);
        return groupData.save();
    }

    /**
     * 增加一个列表的联系人（估计用不到但还是写了）
     * @param groupData
     * @return
     */
    public int addGroups(List<GroupData> groupData){
        int count = 0;
        for (GroupData data:groupData
        ) {
            if (addContact(data.getUsername(),data.getGroupName())){
                count++;
            }
        }
        return count;
    }

    /**
     * 用列表更新数据库中指定用户的数据库
     * @param username
     * @param groupData
     * @return 返回更新完成后列表的人数
     */
    public int updateAllGroups(String username,List<GroupData> groupData){
        if (groupData.isEmpty()){
            return 0;
        }
        LitePal.deleteAll(GroupData.class,"username = ?",username);
        return addGroups(groupData);
    }
}
